home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / scope / 026-050 / scopedisk46 / mj-pgs / mj.plot_t < prev    next >
Text File  |  1995-03-18  |  5KB  |  141 lines

  1. PRINT  TAB(21)"Universal Mandel/Julia Plot Program V2":PRINT 
  2. 'A. Wachtel, September 1988
  3. CLEAR,40000&,10000
  4. WIDTH 77
  5. DEFINT c,d,f,h,i,j,l,m,w,x,y
  6. DIM breakpoint%(62),r(31),g(31),b(31),colors(6100)
  7. start:
  8. PRINT :INPUT"enter the name of the inform file ";f$
  9. OPEN f$ FOR INPUT AS 1
  10. INPUT#1,region$
  11. INPUT#1,horpix,verpix,sym$,typeflag$
  12. INPUT#1,lowcount,iterlimit,jsizelimit
  13. CLOSE#1
  14. IF typeflag$="m" THEN PRINT "Mandelbrot" ELSE PRINT "Julia Set"
  15. IF sym$="y" THEN PRINT "symmetric" ELSE PRINT "not symmetric"
  16. PRINT "0-"horpix-1" hor.pixels, 0-"verpix-1" vert.pixels"
  17. PRINT "sugg.lowest count="lowcount" ,iter.limit="iterlimit" ,'jsizelimit'="jsizelimit
  18. PRINT:PRINT "Left and right real and imag. coordinates and real and imag."
  19. PRINT "values of c are obtained by typing this file from DOS" 
  20. plot:
  21. PRINT :INPUT"Enter the title of the plot ";title$
  22. INPUT"do you want to load breakpoints and colors from a file (y/n)";file$
  23. IF file$="y" THEN GOSUB loadfile:GOTO modify
  24. PRINT"how many colors (incl.background) would you like"
  25. INPUT" max = 16 (hires) or 32 (lores)";c
  26. IF jsizelimit=0 THEN breaklimit%=c-1 ELSE breaklimit%=2*c-2
  27. PRINT "enter";breaklimit%;" counts below"iterlimit+jsizelimit" where the color"
  28. PRINT "should change. The lowest value should be near"lowcount
  29.   FOR i=1 TO breaklimit%:PRINT "breakpoint #";i;:INPUT breakpoint%(i):NEXT  
  30. PRINT :PRINT "enter the r-g-b values of";c;"fields, starting with the background:"
  31.   FOR j=0 TO c-1:PRINT "pen# ";j;:INPUT r(j),g(j),b(j):NEXT
  32. modify: PRINT "Breakpoints are:
  33. FOR i=1 TO breaklimit%:PRINT i;breakpoint%(i),:NEXT
  34. INPUT"Do you wish to modify any breakpoints (y/n)";brk$
  35. IF brk$="y" THEN INPUT"breakpoint#";i:INPUT"value";breakpoint%(i):GOTO modify
  36. colmod:PRINT "palettes are:":FOR j=0 TO c-1:PRINT j;r(j);g(j);b(j),:NEXT
  37. PRINT :INPUT"Do you wish to modify any pen colors (y/n) ";pen$
  38. IF pen$="y"THEN INPUT"pen#";j:INPUT"r,g,b";r(j),g(j),b(j):GOTO colmod
  39.   'the divided input statements above are needed because of a limitation
  40.   'of the AC-Basic compiler.
  41. GOSUB writefile
  42. IF sym$="y" THEN hor=horpix/2-1 ELSE hor=horpix-1
  43. PRINT :INPUT"do you want a color change at each successive count (y/n)";modulo$
  44. PRINT :PRINT "TO CLEAR PLOT SCREEN, PRESS <RETURN> 
  45. INPUT"enter the name of the count file";f4$   
  46. wdth=horpix+8:hgth=verpix+13
  47.   IF wdth=<320 AND hgth=<200 THEN mode=1:dpth=5
  48.   IF wdth>320 AND hgth=<200 THEN mode=2:dpth=4
  49.   IF wdth=<320 AND hgth>200 THEN mode=3:dpth=5
  50.   IF wdth>320 AND hgth>200 THEN mode=4:dpth=4
  51.   IF c=<8 THEN dpth=3
  52. SCREEN 3,wdth,hgth,dpth,mode
  53. WINDOW 2,title$,,0,3
  54. FOR j=0 TO c-1:PALETTE j,r(j),g(j),b(j):NEXT
  55. OPEN f4$ FOR INPUT AS 4 
  56. IF modulo$="y" THEN
  57.   IF sym$="y" THEN GOSUB plot4 ELSE GOSUB plot2
  58.   GOTO finish
  59. END IF      
  60. ii=1
  61. FOR i=1 TO iterlimit-1
  62.    colors(i)=ii
  63.    IF i=breakpoint%(ii) THEN ii=ii+1
  64. NEXT
  65. IF jsizelimit>0 THEN
  66. ii=c:c2=2*c-1
  67. FOR i=iterlimit TO iterlimit+jsizelimit-1
  68.    colors(i)=c2-ii
  69.    IF i=breakpoint%(ii) THEN ii=ii+1
  70. NEXT
  71. END IF
  72.   IF sym$="y" THEN GOSUB plot3 ELSE GOSUB plot1
  73. finish:CLOSE #4
  74.    
  75. WHILE INKEY$<>CHR$(13):WEND
  76. SCREEN CLOSE 3:WINDOW CLOSE 2
  77. PRINT :PRINT"do you want to replot this with different breakpoints/colors (p)"
  78. INPUT"or rerun the program (r) - -to end just hit <RTN>";plot$
  79. IF plot$="p" THEN GOTO plot
  80. IF plot$="r" THEN GOTO start
  81. END
  82.  
  83. loadfile:
  84. INPUT"filename of breakpoint, color data ";f2$
  85. OPEN f2$ FOR INPUT AS 2
  86.   INPUT# 2,c
  87.   IF jsizelimit=0 THEN breaklimit%=c-1 ELSE breaklimit%=2*c-2
  88.   FOR i=1 TO breaklimit%: INPUT# 2, breakpoint%(i):NEXT i
  89.   FOR j=0 TO c-1: INPUT# 2,j,r(j),g(j),b(j):NEXT j
  90. CLOSE#2
  91. INPUT"do you want to modify these breakpoints with a bp file";q$
  92. IF q$="y" THEN
  93.   INPUT"enter the name of the bp file";bpfile$
  94.   OPEN bpfile$ FOR INPUT AS 2
  95.   i=1
  96.   WHILE NOT EOF(2)
  97.     INPUT#2,breakpoint%(i)
  98.     i=i+1
  99.   WEND
  100.   CLOSE#2
  101. END IF    
  102. RETURN
  103.  
  104. writefile:
  105. INPUT"Do you wish to save the new parameters (y/n) ";para$
  106. IF para$ <>"y"THEN RETURN
  107. INPUT"filename ";f3$
  108. OPEN f3$ FOR OUTPUT AS 3
  109.   WRITE#3,c
  110.   FOR i=1 TO breaklimit%: WRITE#3,breakpoint%(i):NEXT i
  111.   FOR j=0 TO c-1: WRITE#3,j,r(j),g(j),b(j): NEXT 
  112. CLOSE#3
  113. RETURN
  114.  
  115. plot1:
  116.   FOR x=0 TO hor:FOR y=0 TO verpix-1
  117.   count=CVI(INPUT$(2,4))
  118.   PSET (x,verpix-1-y),colors(count)
  119.   NEXT :NEXT :RETURN  
  120.  
  121. plot2:
  122.     FOR x=0 TO hor:FOR y=0 TO verpix-1
  123.   count=CVI(INPUT$(2,4))
  124.   PSET (x,verpix-1-y),count MOD c
  125.   NEXT :NEXT :RETURN
  126.  
  127. plot3:
  128.   FOR x=0 TO hor:FOR y=0 TO verpix-1
  129.   count=CVI(INPUT$(2,4))
  130.   PSET (x,verpix-1-y),colors(count)
  131.   PSET (horpix-1-x,y),colors(count)
  132.   NEXT :NEXT :RETURN
  133.  
  134. plot4:
  135.     FOR x=0 TO hor:FOR y=0 TO verpix-1
  136.   count=CVI(INPUT$(2,4))
  137.   PSET (x,verpix-1-y),colors(count)
  138.   PSET (horpix-1-x,y),count MOD c
  139.   NEXT :NEXT :RETURN
  140.  
  141.